import axios from 'axios'

// 导入element-plus的弹窗插件
import { ElMessage } from "element-plus";
// 根路径
const baseURL = '/api'
// 创建axios实例
const instance = axios.create({ baseURL })
// 导入路由
import router from '@/router'
// 导入tokenStore
import { useTokenStore } from "@/stores/token.js";

// 添加请求拦截器
instance.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么
  // 获取tokenStore
  const tokenStore = useTokenStore()
  // 打印最终访问的url
  // console.log('请求拦截器 - 令牌：', tokenStore.token);
  // console.log('请求URL:', config.url);

  // 判断token是否存在
  if (tokenStore.token) {
    // 添加token到请求头
    config.headers.Authorization = `${tokenStore.token}`
  }
  return config;
},
  function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  }
);

// 添加响应拦截器
instance.interceptors.response.use(
  // 成功的回调函数
  function (response) {
    // 打印响应数据，用于调试
    console.log("响应数据：", { response });

    // 处理2xx响应
    return response.data;
  },
  // 失败的回调函数
  function (error) {
    // 网络错误或超时处理
    if (!error.response) {
      ElMessage.error('网络连接异常，请检查您的网络');
      return Promise.reject(error);
    }

    const status = error.response.status;
    // 400  参数错误
    if (status === 400) {
      ElMessage.error('账号或密码错误');
    }
    // 401 未登录
    if (status === 401) {
      ElMessage.error('请先登录');
      // 返回登录页
      router.push('/login');
    }
    // 404 请求不存在
    else if (status === 404) {
      ElMessage.error('请求的资源不存在');
    }
    // 500 服务器内部错误
    else if (status >= 500) {
      ElMessage.error('服务器内部错误，请稍后再试');
    }

    return Promise.reject(error);
  }
);


export default instance